package com.lanou3g.hw0512;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by dllo on 18/5/14.
 */
@WebServlet(name = "BServlet",urlPatterns = "/b")
public class BServlet extends HttpServlet {
    //请求转发留头不留题
    //设置的响应头 会 被留下来,但是 响应体 以最终被转发到
    //的 servlet为准,其他响应体都会被抛弃
    /*
    请求转发 和 请求重定向的区别
    1.请求转发是一个请求 一次响应,而请求重定向,是多次响应
    2.请求转发地址栏不变,而重定向后 会显示一个新的请求地址
    3.请求转发 只能转发到本项目的其他servlet ,而重定向 则
    没有限制,本项目的也行 其他网站也行
    4.请求转发是服务器行为 只需要给出转发的  servlet路径,
    而重定向是浏览器行为
    5.请求转发效率高
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //写代码
        System.out.println("BServlet");

//        1.编码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //2拿数据
        String username=request.getParameter("username");
        //3校验
        boolean startWithNUM = false;
        for (int i = 0; i <9 ; i++) {
            if (username.startsWith(String.valueOf(i)  )){
            startWithNUM=true;}

        }


        RequestDispatcher rd=null;
       if (startWithNUM){
       rd =request.getRequestDispatcher("/d");

       }else {
           rd=request.getRequestDispatcher("/a");
           rd.forward(request,response);
       }
        //请求转发
        //虽然真正的干活的是servlet
        //但是浏览器网站是不变的,还是 以为访问的是b
        //这样 可以隐藏真正干活的 Aservlet路径
//        rd.forward(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 this.doPost(request,response);
    }
}
